/*
 *	Copyright © 2013 Changsha Shishuo Network Technology Co., Ltd. All rights reserved.
 *	长沙市师说网络科技有限公司 版权所有
 *	http://www.shishuo.com
 */

package com.hlingsoft.kkh.dao;

import com.hlingsoft.kkh.entity.AppUser;
import com.hlingsoft.kkh.entity.User;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * 用户服务
 *
 * @author Zhang jiale
 */

@Repository
public interface UserDao {

    // ///////////////////////////////
    // ///// 增加 ////////
    // ///////////////////////////////

    /**
     * 增加用户
     *
     * @param user
     * @return Integer
     */
    public int addUser(AppUser user);


    // ///////////////////////////////
    // ///// 修改 ////////
    // ///////////////////////////////

    /**
     * 更新用户数据
     *
     * @param user
     * @return Integer
     */
    public int updateUser(AppUser user);

    // ///////////////////////////////
    // ///// 查詢 ////////
    // ///////////////////////////////

    /**
     * 根据Id得到用户信息
     *
     * @param weChatId
     * @return User
     */
    public AppUser getUserByWeChatId(@Param("weChatId") String weChatId);

    /**
     * 通过id查找用户
     *
     * @param id
     * @return
     */
    public AppUser getUserById(@Param("id") long id);

    public AppUser getUserByIdWithNone(@Param("id") long id);


    /**
     * 通过名字模糊查找
     *
     * @param name
     * @return
     */
    public List<AppUser> getUserByName(@Param("name") String name);

    /**
     * 获取所有的用户
     *
     * @return
     */
    public List<AppUser> getAll(@Param("offset") int offset, @Param("rows") int rows);

    /**
     * 获取所有用户不理是否被禁用
     *
     * @param offset
     * @param rows
     * @return
     */
    public List<AppUser> getAppUserWithNone(@Param("offset") int offset, @Param("rows") int rows);


    public List<AppUser> getAppUserWithNone1();

    /**
     * 获取用户
     *
     * @return
     */
    public int getAppUserWithNoneCount();

    /**
     * 所有用户数量
     *
     * @return
     */
    public int getAllCount();

    /**
     * 获取所有用户
     *
     * @return
     */
    public List<AppUser> getAllList();

    /**
     * 根据性别查询
     *
     * @return
     */
    public List<AppUser> getUserByGender(@Param("gender") int gender, @Param("offset") int offset, @Param("rows") int rows);

    /**
     * 获取点赞最多的人
     *
     * @return
     */
    public List<AppUser> getMostLikeUser();

    /**
     * 通过手机号查询
     *
     * @param phone
     * @return
     */
    public AppUser getUserByPhone(@Param("phone") String phone);


    public int updateUdIdById(@Param("id") long id);


    /**
     * 禁用用户
     *
     * @param id
     * @return
     */
    public int deleteUser(@Param("id") long id);


    /**
     * 启用账号
     *
     * @param id
     * @return
     */
    public int getOnUserById(@Param("id") long id);


    /**
     * 查找达人
     * @param offset
     * @param rows
     * @return
     */
    public List<AppUser> getHostList(@Param("gender")int gender,@Param("offset")int offset,@Param("rows")int rows);

    /**
     * 获取相同兴趣的人
     * @param interestId
     * @return
     */
    public List<AppUser> getSameInterest(@Param("gender")int gender,@Param("interestId")String interestId,@Param("offset")int offset,@Param("rows")int rows);


    /**
     * 获取用户所有id
     * @return
     */
    public List<Integer> getAllIds(@Param("gender")int gender);


    /**
     * 查询
     * @param professionId
     * @param interestIds
     * @param offset
     * @param rows
     * @return
     */
    public List<AppUser> getSearch(@Param("professionId")Integer professionId,@Param("interestIds")String interestIds,@Param("name")String name,@Param("offset") int offset, @Param("rows") int rows);


    /**
     * 查询结果数
     * @param professionId
     * @param interestIds
     * @param name
     * @return
     */
    public Integer getSearchCount(@Param("professionId")Integer professionId,@Param("interestIds")String interestIds,@Param("name")String name);
}
